package controller

import (
	"douyin/models"
	"douyin/repository/mysql"
	"douyin/service"
	"douyin/utils/pack"

	"github.com/gin-gonic/gin"
	"go.uber.org/zap"
)

// CommentAction 评论操作
func CommentAction(c *gin.Context) {
	//1.获取querystring参数和参数校验
	p := new(models.CommentRequest)
	if err := c.ShouldBind(&p); err != nil {
		// 请求参数有误，直接返回响应
		zap.L().Error("controller.CommentAction with invalid param", zap.Error(err))
		pack.ResponseError(c, models.CodeInvalidParam)
		return
	}
	//2. 业务处理
	userId, _ := c.Get(pack.CtxUserIDKey)
	err := service.CommentAction(p, userId.(int64))
	if err != nil {
		zap.L().Error("service.CommentAction failed", zap.Error(err))
		pack.ResponseError(c, models.CodeCommentError)
		return
	}
	//3.返回响应
	pack.ResponseSuccess(c, models.CodeSuccess)
}

// CommentList 视频评论列表
func CommentList(c *gin.Context) {
	//1.获取querystring参数和参数校验
	p := new(models.CommentListRequest)
	if err := c.ShouldBind(&p); err != nil {
		// 请求参数有误，直接返回响应
		zap.L().Error("controller.CommentList with invalid param", zap.Error(err))
		pack.ResponseError(c, models.CodeInvalidParam)
		return
	}
	//2. 业务处理
	userId, _ := c.Get(pack.CtxUserIDKey)
	commentList, err := service.CommentList(p.VideoId, userId.(int64))
	//查询空处理
	if err == mysql.ErrorQueryZeroRecord {
		zap.L().Error("service.CommentList ErrorQueryZeroRecord!! ", zap.Error(err))
		models.CommentListSuccess(c, nil)
		return
	}
	if err != nil {
		zap.L().Error("service.CommentList failed", zap.Error(err))
		models.CommentListError(c, models.CodeGetVideoCommentsError)
		return
	}
	//3.返回响应
	models.CommentListSuccess(c, commentList)
}
